package com.xiejr.actuator.socket;

import com.xiejr.actuator.exceptioin.SocketActuatorException;

import javax.websocket.CloseReason;
import javax.websocket.Session;

/**
 * @program: socket-actuator-spring-boot-starter
 * @description: websocket顶级接口
 * @author: xjr
 * @create: 2020-07-09 16:54
 **/
public interface WebSocketHelper {
    /**
     * @param session 打开会话
     * @description socket打开事件
     * @author xiejiarong
     * @date 2020年07月09日 17:01
     */
    void open(Session session) throws SocketActuatorException;


    /**
     * @param session 错误会话
     * @param err 错误异常
     * @description socket发生错误
     * @author xiejiarong
     * @date 2020年07月09日 17:01
     */
    void error(Session session,Throwable err) throws Throwable;

    /**
     * @param message 接收消息
     * @param session 消息会话
     * @description socket接收到消息
     * @author xiejiarong
     * @throws SocketActuatorException 异常
     * @date 2020年07月09日 17:01
     */
    void message(Session session,String message) throws SocketActuatorException;


    /**
     * @param closeReason 关闭原因
     * @param session 关闭会话
     * @description socket关闭回调
     * @author xiejiarong
     * @date 2020年07月09日 17:01
     */
    void close(Session session, CloseReason closeReason) throws SocketActuatorException;


}
